"""
财务数据可视化工具配置文件
基于PRD精简版的技术架构要求
"""

import os
from pathlib import Path

# 项目根目录
PROJECT_ROOT = Path(__file__).parent

# 数据库配置
DATABASE_CONFIG = {
    'db_path': PROJECT_ROOT / 'data' / 'financial_data.db',
    'cache_size_limit': 500 * 1024 * 1024,  # 500MB
}

# 缓存策略配置（按PRD要求）
CACHE_CONFIG = {
    'quarterly_report_days': 90,    # 季报缓存90天
    'annual_report_days': 365,      # 年报缓存365天
    'analysis_result_days': 7,      # 分析结果缓存7天
    'cleanup_strategy': 'LRU',      # 最近最少使用清理策略
}

# 价值投资评分权重配置（按PRD要求）
SCORING_WEIGHTS = {
    'asset_quality': 0.40,      # 资产质量40%
    'financial_safety': 0.35,   # 财务安全35%
    'growth_potential': 0.25,   # 成长潜力25%
}

# 资产质量评分细分权重
ASSET_QUALITY_WEIGHTS = {
    'cash_ratio': 0.25,         # 现金比例25%
    'receivables_ratio': 0.25,  # 应收账款占比25%
    'inventory_efficiency': 0.25, # 存货周转效率25%
    'goodwill_risk': 0.25,      # 商誉风险25%
}

# 财务安全评分细分权重
FINANCIAL_SAFETY_WEIGHTS = {
    'debt_ratio': 0.30,         # 资产负债率30%
    'current_ratio': 0.25,      # 流动比率25%
    'quick_ratio': 0.25,        # 速动比率25%
    'interest_debt_ratio': 0.20, # 有息负债占比20%
}

# 成长潜力评分细分权重
GROWTH_POTENTIAL_WEIGHTS = {
    'total_asset_growth': 0.40,  # 总资产增长率40%
    'equity_growth': 0.35,       # 净资产增长率35%
    'fixed_asset_investment': 0.25, # 固定资产投资强度25%
}

# 评分等级配置
SCORE_GRADES = {
    'A+': {'min': 90, 'max': 100, 'description': '强烈推荐'},
    'A': {'min': 80, 'max': 89, 'description': '推荐'},
    'B+': {'min': 70, 'max': 79, 'description': '谨慎推荐'},
    'B': {'min': 60, 'max': 69, 'description': '观望'},
    'C': {'min': 50, 'max': 59, 'description': '不推荐'},
    'D': {'min': 0, 'max': 49, 'description': '强烈不推荐'},
}

# 图表配置
CHART_CONFIG = {
    'height': 600,
    'color_scheme': {
        'assets': ['#1f77b4', '#aec7e8', '#2ca02c', '#98df8a'],  # 蓝色系
        'liabilities': ['#d62728', '#ff7f7f', '#ff6b6b'],        # 红色系
        'equity': ['#2ca02c', '#98df8a', '#90ee90'],             # 绿色系
    },
    'font_family': 'Arial, sans-serif',
    'title_size': 16,
    'axis_title_size': 14,
    'legend_size': 12,
}

# API配置
API_CONFIG = {
    'timeout': 30,              # API调用超时时间（秒）
    'retry_times': 3,           # 重试次数
    'retry_delay': 1,           # 重试延迟（秒）
}

# 数据验证配置
VALIDATION_CONFIG = {
    'required_columns': [
        '报告日期', '科目', '金额'
    ],
    'min_data_years': 2,        # 最少需要2年数据
    'max_data_years': 5,        # 最多显示5年数据
}

# 确保数据目录存在
os.makedirs(DATABASE_CONFIG['db_path'].parent, exist_ok=True)
